NoSQL چیست؟
نوشته شده توسط : مطلب پروژه

NoSQL چیست؟

آیا تاکنون از خود پرسیده اید گوگل چگونه در کسری از ثانیه در میلیاردها صفحه اینترنت جستجو میکند؟ آیا از SQL استفاده میکند؟ مسلما خیر, از تکنولوژی جدیدی به نام NoSQL استفاده میکند!

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276


رایج ترین دسته دیتابیس ها امروزه بر مبنای SQL میباشند و اینگونه دیتابیس ها “ارتباطی” یا “relational” نامیده میشوند.

اما با پیشرفت تکنولوژی طی سالیان اخیر نیاز به پردازش و ذخیره سازی بهینه تر , سرعت بالا و عدم امکان استفاده از جداول (Table) در بسیاری از پروژه های بزرگ احساس میشد. از طرفی ذخیره سازی حجم بالایی از داده های بدون ساختار (non-structured data) در دیتابیس های SQL باعث کاهش شدید سرعت و کارایی دیتابیس میگردد. از این رو تکنولوژی جدیدی به نام NoSQL با اهدافی متفاوت ارائه شد. هدف اصلی NoSQL ذخیره سازی و کار با داده های بدون ساختار و حجیم میباشد.

متاسفانه این علم روز جهانی در داخل کشورمان تاکنون زیاد مورد بحث و استفاده قرار نگرفته است. در ادامه به بررسی عملکرد قابل توجه و انواع آن میپردازیم…

ساختار و عملکرد SQL

SQL
قبل از پرداختن به ساختار NoSQL باید کمی با SQL دقیق تر آشنا شویم.

دیتابیس های SQL نحوه عملکرد سازمان یافته و سفت و سخت تری در ذخیره سازی و دریافت اطلاعات دارند. اگر تاکنون با SQL کار کرده باشید میدانید که اطلاعات درون جداول (Tables) – ستون ها (Columns) – سطرها (Rows) ذخیره میشوند.

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276


به زبان ساده در SQL:

هر سطر (Row) نقش یک رشته ورودی یا خروجی را دارد.

هر ستون (Column) نقش یک خصوصیت یا شاخص را دارد.

هر جدول (Table) نقش یک خوشه اطلاعات با خصوصیات مشترک را دارد.

همچنین در SQL میتوانیم هر جدول را به جدول دیگری ارتباط بدهیم و جداول مرتبط با هم بسازیم.

تمامی این ارتباطات و ساختارهای داده ای مرتبط با هم در پشت صحنه توسط دیتابیس به واسطه ساختاری به نام Schema ذخیره میشوند. اما به علت ثابت بودن ماهیت دیتابیس های SQL , ساختار هر دیتابیس مانند پی ساختمان توسط Schema ثابت تعریف شده است. (Predefined Schema)

این قائده مندی و ساختاردهی در بسیاری از موارد کاربردی و مفید میباشد. در کل SQL بسیار پایدار (Stable) و مناسب برای داده های خصوصیت دار و ساختاریافته میباشد. اما در مورد ذخیره سازی داده های بسیار بزرگ و بدون ساختار مشخص, ناگهان نقاط قوت آن به نقاط ضعف تبدیل میشوند و خصوصیات سفت و سخت ذخیره سازی و کار با داده ها در SQL باعث محدود شدن قابلیت ذخیره سازی اطلاعات متفاوت در کنار هم و کاهش چشمگیر کارایی و سرعت میگردد.
ساختار و عملکرد NoSQL

خلاء ایجاد شده توسط نقاط ضعف SQL در کار با داده های حجیم باعث ایجاد و توسعه NoSQL شد.

NoSQL قابلیت مدیریت کردن و کار با حجم بسیار عظیمی از داده ها را داراست. مشخصا در آن برای کار با داده ها از زبان SQL استفاده نمیشود. بلکه به صورت بسیار ساده و روان از XML یا JSON برای این منظور استفاده میگردد.

از آنجایی که NoSQL باید بتواند انواع مختلف داده های بدون ساختار مشخص را ذخیره کند, در ساختار داخلی آن از “Schema پویا و قابل تغییر” یا “Dynamic Schema” استفاده شده است. این خصوصیت امکان تغییر در ساختار ذخیره سازی داده ها را فراهم کرده و انعطاف فراوانی به دیتابیس در کار با داده های گوناگون و حجیم میدهد.

با این حال از نقاط ضعف NoSQL میتوان به عدم امکان کار با کوئری های پیچیده اشاره کرد. همچنین به نسبت دقت بالای SQL در NoSQL امکان بروز خطاهایی با احتمال بسیار پایین در موقع ثبت و تغییر داده ها وجود دارد. (ریسک پیش آمدن حالت های پیش بینی نشده توسط مدیر دیتابیس, هر چند اندک وجود دارد. مدیر دیتابیس باید با شناخت کامل خصوصیات دیتابیس خود, آن را جهت حفط یکپارچگی داده ها به صورت صحیح مدیریت کند.)

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276


دسته های مختلفی از دیتابیس های NoSQL تاکنون ساخته شده اند. در ادامه به بررسی هر کدام میپردازیم.
انوع مختلف NoSQL
دیتابیس های NoSQL کلید و مقدار (Key-value NoSQL):

در اینگونه دیتابیس ها از یک کلید (Key) که نقش شناسه هر داده را بازی میکند به منظور دریافت و ذخیره سازی داده (Value) استفاده میشود. این دسته به علت سادگی کارکرد پر استفاده ترین نوع دیتابیس های NoSQL میباشد.
دیتابیس های NoSQL اسناد (Document NoSQL):

اینگونه دیتابیس ها به منظور ذخیره سازی و کار با اسنادی با فرمت های XML, JSON , … به کار میروند. از دیتابیس های اسنادی NoSQL به منظور ذخیره سازی داده های بدون ساختار مشخص با پراکندگی بالا استفاده میشود.
دیتابیس های NoSQL چند ستونه (Wide-column NoSQL):

دیتابیس های چند ستونه در نگاه اول همانند دیتابیس های SQL از جدول و ستون و سطر استفاده میکنند. اما عملکرد آن های ارتباطی به جداول SQL ندارد! فقط ظاهر جداول آن ها تا حدی شبیه ساختار جداول SQL میباشد. بر خلاف SQL هر ستون میتواند شامل داده هایی با فرمت و ساختار متفاوت باشد. به عبارتی دیگر نوع تعریف و فرمت یک ستون میتواند در هر سطر متفاوت باشد. این دیتابیس ها انعطاف بسیار بالایی در ثبت و کار با داده های بسیار عظیم و متفاوت دارند.
دیتابیس های NoSQL گرافی (Graph NoSQL):

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276


دیتابیس های گرافی به منظور ذخیره سازی حجم زیادی از داده های ارتباطی (Relational data) طراحی شده اند. به زبان ساده میتوان اینگونه دیتابیس ها را مانند گرافی شامل “داده ها -> راس ها” و “ارتباط ها -> یال ها” در یک گراف هندسی در نظر گرفت. از این دسته دیتابیس ها در ذخیره سازی انواع معماری های داده های شبکه ای نیز استفاده میشود.
graph - گراف
دیتابیس های NoSQL متغیر یا چند مدله (MultiModel NoSQL):

دیتابیس های چند مدله امکان ذخیره سازی و کار با داده ها را در چندین حالت متفاوت فراهم میکنند. اینگونه دیتابیس ها میتوانند تلفیقی از انوع دیگر دیتابیس های NoSQL باشند. (مانند Key-value و گرافی)
NoSQL جایگزین کامل SQL نیست!

باید دقت داشت که NoSQL و SQL هر کدام کاربردهای متفاوتی دارند. همانطور که گفته شد SQL دقت بالاتری در هنگام کار با داده های کوچک دارد و برای کار با داده های ساختاریافته طراحی شده است. در حالی که NoSQL برای کار با داده های کلان و بدون ساختار مشخص طراحی شده است.

از جمله سیستم هایی که SQL در آن ها بهینه عمل میکند میتوان به موارد زیر اشاره کرد:

    سیستم های مدیریت سطح دسترسی (Access Control). (مثال: مدیریت کاربران سایت و سیستم ها)
    سیستم های تراکنش بانکی
    …

از جمله سیستم هایی که NoSQL در آن ها بهینه عمل میکند میتوان به موارد زیر اشاره کرد:

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276


    کلان داده (Big data)
    موتورهای جستجوگر
    سیستم های مانیتورینگ و پویش شبکه
    …

چرا سازمان ها نیاز به مهاجرت به NoSQL دارند؟

در چند سال اخیر افزایش بسیار زیادی در نرخ تولید و جمع آوری داده ها رخ داده است. همچنین سازمان ها با داده های ورودی گوناگون و متنوعی رو به رو هستند. در نتیجه حجم و گوناگونی داده هایی که سازمان نیاز به مدیریت و کار با آن ها دارد بسیار افزایش داشته است.

چنین امری سازمان ها را ملزم به بروزرسانی سیستم های سنتی مدیریت دیتابیس (DBMS) به سیستم های نوینی میکند, که امکان بررسی و آنالیز داده هایی عظیم که هر لحظه افزوده میشوند را داشته باشد.

همچنین بسیاری از داده هایی که سازمان ها با آن سر و کار دارند داده های بدون ساختار مشخص هستند و امکان تعریف تعداد بسیار زیادی جدول و فیلد در دیتابیس های SQL غیر منطقی به نظر میرسد. در نتیجه استفاده از تکنولوژی های پیشرفته ای مانند NoSQL باعث از بین رفتن محدودیت های فنی ذخیره سازی داده ها و اطلاعات میشود.

مهاجرت از SQL به NoSQL گرچه فرایندی سخت و هزینه بر میباشد, اما با تشخیص صحیح مدیر دیتابیس باعث بهینه تر شدن عملکرد چشمگیر سیستم های اطلاعاتی میشود. قابلیت توسعه و پایداری بالای NoSQL در کار کردن با حجم داده های بالا, با SQL قابل قیاس نیست.
معرفی برخی از دیتابیس های NoSQL

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276


    Aerospike: اگر به دنبال دیتابیس Key-value بسیار قدرتمند برای کلاسترینگ میگردید aerospike گزینه مناسبی میباشد. این دیتابیس از لحاظ حجم پردازش داده  و سرعت بالاترین رتبه را در Benchmark بدست آورده است. ذخیره سازی اطلاعات در این دیتابیس به صورت ادغامی از Ram و SSD صورت میگیرد.
    aerospike
    Redis: یک دیتابیس Key-value که برای حجم کار کوچکتر به نسبت aerospike مناسب میباشد. تمامی اطلاعات این دیتابیس در Ram ذخیره میشوند. این دیتابیس قابلیت کلاستر شدن ندارد!
    redis
    MongoDB: مونگو معروف ترین دیتابیس NoSQL است و برای ذخیره سازی اسناد (Documents) استفاده میشود. اگر نیار به ذخیره سازی حجم بالایی از داده های مختلف و پراکنده را دارید مونگو گزینه مناسبی برای شماست. کار کردن با مونگو به نسبت ساده است و اگر قصد شروع کار و آشنایی با NoSQL ها را دارید شخصا آن را پیشنهاد میکنم.
    mongodb - مونگو
    Cassandra: این دیتابیس از قوی ترین دیتابیس های NoSQL میباشد و توسط Apache ارائه شده است. دیتابیس Cassandra در دسته Wide-column قرار دارد. قابلیت های بسیار خاص و بالا, Cassandra را از بسیاری از NoSQLهای دیگر برتر میکند. گرچه سرعت پردازش Aerospike از Cassandra بیشتر است اما قابلیت های فراوان و انعطاف بالای Cassandra به عقیده بسیاری آن را قدرتمندترین NoSQL کرده است.
    cassandra
    Neo4j: دیتابیسی بر پایه گراف (Graph) که برای ذخیره سازی ساختمان داده های مختلف شبکه ای و داده های ارتباطی بسیار مناسب میباشد.

azsoftir@gmail.com
azsoftir.com

09367292276

azsoftir@gmail.com
azsoftir.com
09367292276

azsoftir@gmail.com
azsoftir.com
09367292276





:: موضوعات مرتبط: /proje-new-er-sql , ,
:: بازدید از این مطلب : 85
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : دو شنبه 10 ارديبهشت 1397 | نظرات ()
مطالب مرتبط با این پست
لیست
می توانید دیدگاه خود را بنویسید


نام
آدرس ایمیل
وب سایت/بلاگ
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

آپلود عکس دلخواه: